package edu.erpan.web.pedidos;

import java.util.ArrayList;
import java.util.List;
import java.util.TimeZone;

import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import org.icefaces.ace.event.DragDropEvent;

import com.icesoft.faces.context.effects.JavascriptContext;

import edu.erpan.bl.dto.ConsumoMateriaPrima;
import edu.erpan.bl.entities.Cliente;
import edu.erpan.bl.entities.LineaPedido;
import edu.erpan.bl.entities.Pedido;
import edu.erpan.bl.entities.Producto;
import edu.erpan.fachada.IOrdenPedidoFachada;
import edu.erpan.fachada.IProductoFachada;
import edu.erpan.fachada.OrdenPedidoFachada;
import edu.erpan.fachada.ProductoFachada;
import edu.erpan.util.entityManager.exceptions.IdNotFoundException;
import edu.erpan.util.entityManager.exceptions.PersistException;
import edu.erpan.util.entityManager.exceptions.QueryException;
import edu.erpan.web.util.Recursos;


/**
 * @author JeisonL
 *
 */
public class OrdenPedidoBean {

	private Pedido pedido;
	private List<LineaPedido> lineasPedido;
	
	private LineaPedido nuevaLineaPedido;
	
	private List<Pedido> pedidosAProduccion;
	private List<Pedido> pedidosPendientes;
	private List<Pedido> pedidosCancelados;
	private List<Cliente> clientes;
	private List<SelectItem> itemsClientes;
	
	private List<SelectItem>itemsProductos;
	
	private List<ConsumoMateriaPrima> totalConsumoDeMateriaPrima;
	
	private TimeZone timeZone;
	
	private boolean collapsed=false;
	private boolean editandoPedido=false;
	private boolean abiertoPopupLineaPedido=false;
	private boolean abiertoPopupConsumoDeMateriaPrima=false;
	private int valorNoValido = -1;
	
	private Pedido pedidoCambiarEstado;
	
	public OrdenPedidoBean() {
		this.timeZone=TimeZone.getTimeZone("America/Lima");
		
		this.pedido=new Pedido();
		Cliente cliente=new Cliente();
		this.pedido.setCliente(cliente);
		
		this.lineasPedido=new ArrayList<LineaPedido>(0);
		
		this.nuevaLineaPedido=new LineaPedido();
		this.nuevaLineaPedido.setProducto(new Producto());
		this.totalConsumoDeMateriaPrima=new ArrayList<ConsumoMateriaPrima>(0);
		
		this.consultarProductos();
		this.consultarPedidosAProduccion();
		this.consultarPedidosPendientes();
		this.consultarPedidosCancelados();
		this.consultarClientesActivos();
	}
	
	private void consultarProductos(){
		IProductoFachada productoFachada=new ProductoFachada();
		try {
			this.itemsProductos=new ArrayList<SelectItem>(0);
			List<Producto>productos=productoFachada.consultarProductos();
			for(Producto producto:productos){
				SelectItem item=new SelectItem();
				item.setValue(producto.getIdproducto());
				item.setLabel(producto.getNombre());
				
				this.itemsProductos.add(item);
			}
		} catch (QueryException e) {
			String nombreEntidad=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_PRODUCTOS);
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_CONSULTA);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreEntidad));
		}catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	private void consultarPedidosAProduccion(){
		IOrdenPedidoFachada ordenPedidoFachada=new OrdenPedidoFachada();
		try {
			this.pedidosAProduccion=ordenPedidoFachada.consultarPedidosAProduccion();
		} catch (QueryException e) {
			String nombreEntidad=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_PEDIDO);
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_CONSULTA);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreEntidad));
		}catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	private void consultarPedidosPendientes(){
		IOrdenPedidoFachada ordenPedidoFachada=new OrdenPedidoFachada();
		try {
			this.pedidosPendientes=ordenPedidoFachada.consultarPedidosPendientes();
		} catch (QueryException e) {
			String nombreEntidad=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_PEDIDO);
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_CONSULTA);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreEntidad));
		}catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	private void consultarPedidosCancelados(){
		IOrdenPedidoFachada ordenPedidoFachada=new OrdenPedidoFachada();
		try {
			this.pedidosCancelados=ordenPedidoFachada.consultarPedidosCancelados();
		} catch (QueryException e) {
			String nombreEntidad=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_PEDIDO);
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_CONSULTA);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreEntidad));
		}catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	private void consultarClientesActivos() {
		IOrdenPedidoFachada ordenPedidoFachada=new OrdenPedidoFachada();
		try {
			this.itemsClientes=new ArrayList<SelectItem>(0);
			this.clientes=ordenPedidoFachada.consultarClientesActivos();
			
			SelectItem item=new SelectItem(this.valorNoValido ,Recursos.getInstance().getEtiqueta("item.seleccionarUnaOpcion") );
			itemsClientes.add(item);
			
			for(Cliente cliente:clientes){
				item=new SelectItem();
				item.setValue(cliente.getIdcliente());
				item.setLabel(cliente.getNombre());
				
				this.itemsClientes.add(item);
			}
		} catch (QueryException e) {
			String nombreEntidad=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_CLIENTES);
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_CONSULTA);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreEntidad));
		}catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	public void consultarPedidos(ActionEvent evento){
		this.pedido=new Pedido();
		Cliente cliente=new Cliente();
		this.pedido.setCliente(cliente);
		this.lineasPedido=new ArrayList<LineaPedido>(0);
		
		this.editandoPedido=false;
		this.consultarPedidosAProduccion();
	}

	public void abrirPopupLineaPedido(ActionEvent evento){
		this.abiertoPopupLineaPedido=true;
		this.consultarProductos();
	}
	
	public void guardarPedido(ActionEvent evento){
		IOrdenPedidoFachada ordenPedidoFachada =new OrdenPedidoFachada();
		try {
			if(validarCamposPedido(this.pedido,this.lineasPedido)){
				this.pedido.setEstado(Pedido.ESTADO_A_PRODUCCION);
				this.pedido=ordenPedidoFachada.guardarPedido(this.pedido, this.lineasPedido);
				
				consultarPedidosPendientes();
				consultarPedidosAProduccion();
				consultarPedidosCancelados();
			}
		} catch (PersistException e) {
			String nombreEntidad=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_PEDIDO);
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_GUARDADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreEntidad));
		}catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	private boolean validarCamposPedido(Pedido pedido,List<LineaPedido>lineasPedido) {
		boolean cumple=true;
		String nombreCampo;
		String mensaje = Recursos.getInstance().getMensaje("campo.obligatorio");
		if(pedido.getFechaRegistro()==null){
			cumple =false;
			nombreCampo=Recursos.getInstance().getEtiqueta("ordenPedido.fechaRegistro");
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreCampo));
		}
		
		if(pedido.getCliente()==null||pedido.getCliente().getIdcliente()<=0){
			cumple =false;
			nombreCampo=Recursos.getInstance().getEtiqueta("ordenPedido.cliente");
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreCampo));
		}
		
		if(lineasPedido==null||lineasPedido.size()<=0){
			cumple =false;
			nombreCampo=Recursos.getInstance().getEtiqueta("ordenPedido.lienasDePedido.titulo");
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreCampo));
		}
		
		return cumple;
	}

	protected void cancelarOrdenPedido(){
		try {
			IOrdenPedidoFachada ordenPedidoFachada =new OrdenPedidoFachada();
			if(isPedidoCancelable(this.pedidoCambiarEstado)){
				this.pedidoCambiarEstado.setEstado(Pedido.ESTADO_CANCELADO);
				ordenPedidoFachada.cancelarOrdenPeddido(this.pedidoCambiarEstado);
				
				this.consultarPedidosPendientes();
				this.consultarPedidosAProduccion();
				this.consultarPedidosCancelados();
			}
		} catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_CANCELAR_ORDEN_VENTA);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	protected void pasarAProduccionOrdenPedido(){
		try {
			IOrdenPedidoFachada ordenPedidoFachada =new OrdenPedidoFachada();
			if(isPedidoProducible(this.pedidoCambiarEstado)){
				this.pedidoCambiarEstado.setEstado(Pedido.ESTADO_CANCELADO);
				ordenPedidoFachada.pasarOrdenPedidoAProduccion(this.pedidoCambiarEstado);
				
				this.consultarPedidosPendientes();
				this.consultarPedidosAProduccion();
				this.consultarPedidosCancelados();
			}
		} catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_PASAR_ORDEN_VENTA_PRODUCCION);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}

	private boolean isPedidoCancelable(Pedido pedido) {
		return pedido!=null&&pedido.getEstado()==Pedido.ESTADO_A_PRODUCCION;
	}
	
	private boolean isPedidoProducible(Pedido pedido) {
		return pedido!=null&&pedido.getEstado()==Pedido.ESTADO_PENDIENTE;
	}
	
	public void agregarLineaPedido(ActionEvent evento){
		try{
			if(validarCamposLineaPedido(this.nuevaLineaPedido)){
				IProductoFachada productoFachada=new ProductoFachada();
				Producto producto=this.nuevaLineaPedido.getProducto();
				producto=productoFachada.consultarProducto(producto);
				this.nuevaLineaPedido.setProducto(producto);
				this.lineasPedido.add(this.nuevaLineaPedido);
				
				this.nuevaLineaPedido=new LineaPedido();
				this.nuevaLineaPedido.setProducto(new Producto());
				
				this.cerrarPopupLineaPedido(evento);
			}
		}catch (QueryException e) {
			String nombreEntidad=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_LINEA_INGRESO_MP);
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_GUARDADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreEntidad));
		} catch (IdNotFoundException e) {
			String nombreEntidad=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_LINEA_INGRESO_MP);
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_GUARDADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreEntidad));
		}catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	private boolean validarCamposLineaPedido(LineaPedido lineaPedido){
		boolean cumple=true;
		String nombreCampo;
		String mensaje = Recursos.getInstance().getMensaje("campo.obligatorio");
		if(lineaPedido.getProducto()==null||lineaPedido.getProducto().getIdproducto()<=0){
			cumple =false;
			nombreCampo=Recursos.getInstance().getEtiqueta("ordenPedido.lienasDePedido.producto");
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES_LINEA_DETALLE),Recursos.ERROR, mensaje.replace("{0}", nombreCampo));
		}
		if(lineaPedido.getCantidad()<=0){
			cumple =false;
			nombreCampo=Recursos.getInstance().getEtiqueta("ordenPedido.lienasDePedido.cantidad");
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES_LINEA_DETALLE),Recursos.ERROR, mensaje.replace("{0}", nombreCampo));
		}
		return cumple;
	}
	
	public void cerrarPopupLineaPedido(ActionEvent evento){
		try {
			this.abiertoPopupLineaPedido=false;
			FacesContext context=FacesContext.getCurrentInstance();
			JavascriptContext.addJavascriptCall(context, "popupIngresoLineaPedido.hide();");
		} catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	public void seleccionarPedido(ActionEvent evento){
		Integer idPedido=(Integer) evento.getComponent().getAttributes().get("idPedido");
		IOrdenPedidoFachada ordenPedidoFachada=new OrdenPedidoFachada();
		this.pedido=new Pedido();
		this.pedido.setIdpedido(idPedido);
		try {
			this.pedido=ordenPedidoFachada.consultarPedido(this.pedido);
			consultarLineasPedido();
			this.editandoPedido=true;
		} catch (QueryException e) {
			String nombreEntidad=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_PEDIDO);
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_SELECCION);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreEntidad));
		} catch (IdNotFoundException e) {
			String nombreEntidad=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_PEDIDO);
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_SELECCION);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreEntidad));
		} catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	private void consultarLineasPedido() {
		IOrdenPedidoFachada ordenPedidoFachada=new OrdenPedidoFachada();
		try {
			this.lineasPedido=ordenPedidoFachada.consultarLineasPedido(this.pedido);
		} catch (QueryException e) {
			String nombreEntidad=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_LINEAS_PEDIDOS);
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_CONSULTA);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje.replace("{0}", nombreEntidad));
		}
	}

	public void calcularConsumoDeMateriaPrimaPorPedido(ActionEvent evento){
		Integer idPedido=(Integer) evento.getComponent().getAttributes().get("idPedido");
		
		try {
			this.pedido=new Pedido();
			this.pedido.setIdpedido(idPedido);
			IOrdenPedidoFachada ordenPedidoFachada=new OrdenPedidoFachada();
			this.pedido=ordenPedidoFachada.consultarPedido(pedido);
			totalConsumoDeMateriaPrima=ordenPedidoFachada.calcularConsumoDeMateriaPrima(pedido);
			this.abiertoPopupConsumoDeMateriaPrima=true;
		} catch (QueryException e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_CALCULO_CONSUMO_MATERIA_PRIMA);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		} catch (IdNotFoundException e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		} catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	public void calcularConsumoDeMateriaPrimaTodosLosPedidosAProduccion(ActionEvent evento){
		try {
			IOrdenPedidoFachada ordenPedidoFachada=new OrdenPedidoFachada();
			totalConsumoDeMateriaPrima=ordenPedidoFachada.calcularConsumoDeMateriaPrimaTodosLosPedidosAProduccion();
			this.abiertoPopupConsumoDeMateriaPrima=true;
		} catch (QueryException e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_CALCULO_CONSUMO_MATERIA_PRIMA);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		} catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	public void calcularConsumoDeMateriaPrimaTodosLosPedidosPendientes(ActionEvent evento){
		try {
			IOrdenPedidoFachada ordenPedidoFachada=new OrdenPedidoFachada();
			totalConsumoDeMateriaPrima=ordenPedidoFachada.calcularConsumoDeMateriaPrimaTodosLosPedidosPendientes();
			this.abiertoPopupConsumoDeMateriaPrima=true;
		} catch (QueryException e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_CALCULO_CONSUMO_MATERIA_PRIMA);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		} catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}
	}
	
	public void cerrarPopupDeConsumoDeMateriaPrima(ActionEvent evento){
		try {
			this.abiertoPopupConsumoDeMateriaPrima=false;
			FacesContext context=FacesContext.getCurrentInstance();
			JavascriptContext.addJavascriptCall(context, "popupConsumoDeMateriaPrima.hide();");
		} catch (Exception e) {
			String mensaje=Recursos.getInstance().getMensaje(Recursos.MENSAJE_ERROR_INESPERADO);
			Recursos.getInstance().addMessagePage(Recursos.getInstance().getMensaje(Recursos.ID_MENSAJES),Recursos.ERROR, mensaje);
		}		
	}

	public void dragCambiarEstadoPedido(DragDropEvent dragDropEvent){
		pedidoCambiarEstado=(Pedido) dragDropEvent.getComponent().getAttributes().get("pedido");
	}
	
	public void cambiarPedidoPendienteAPedidoAProduccion(DragDropEvent e) {
		pasarAProduccionOrdenPedido();
	}

	public void cambiarPedidoAProduccionAPedidoCancelado(DragDropEvent e) {
		cancelarOrdenPedido();
	}
	
	public Pedido getPedido() {
		return pedido;
	}

	public void setPedido(Pedido pedido) {
		this.pedido = pedido;
	}

	public List<LineaPedido> getLineasPedido() {
		return lineasPedido;
	}

	public void setLineasPedido(List<LineaPedido> lineasPedido) {
		this.lineasPedido = lineasPedido;
	}

	public List<SelectItem> getItemsProductos() {
		return itemsProductos;
	}

	public void setItemsProductos(List<SelectItem> itemsProductos) {
		this.itemsProductos = itemsProductos;
	}

	public TimeZone getTimeZone() {
		return timeZone;
	}

	public void setTimeZone(TimeZone timeZone) {
		this.timeZone = timeZone;
	}

	public boolean isCollapsed() {
		return collapsed;
	}

	public void setCollapsed(boolean collapsed) {
		this.collapsed = collapsed;
	}

	public List<Pedido> getPedidosAProduccion() {
		return pedidosAProduccion;
	}

	public void setPedidosAProduccion(List<Pedido> pedidos) {
		this.pedidosAProduccion = pedidos;
	}

	public boolean isEditandoPedido() {
		return editandoPedido;
	}

	public void setEditandoPedido(boolean editandoPedido) {
		this.editandoPedido = editandoPedido;
	}

	public boolean isAbiertoPopupLineaPedido() {
		return abiertoPopupLineaPedido;
	}

	public void setAbiertoPopupLineaPedido(boolean abiertoPopupLineaDetalle) {
		this.abiertoPopupLineaPedido = abiertoPopupLineaDetalle;
	}

	public LineaPedido getNuevaLineaPedido() {
		return nuevaLineaPedido;
	}

	public void setNuevaLineaPedido(LineaPedido nuevaLineaPedido) {
		this.nuevaLineaPedido = nuevaLineaPedido;
	}

	public List<ConsumoMateriaPrima> getTotalConsumoDeMateriaPrima() {
		return totalConsumoDeMateriaPrima;
	}

	public void setTotalConsumoDeMateriaPrima(
			List<ConsumoMateriaPrima> totalConsumoDeMateriaPrima) {
		this.totalConsumoDeMateriaPrima = totalConsumoDeMateriaPrima;
	}

	public boolean isAbiertoPopupConsumoDeMateriaPrima() {
		return abiertoPopupConsumoDeMateriaPrima;
	}

	public void setAbiertoPopupConsumoDeMateriaPrima(
			boolean abiertoPopupConsumoDeMateriaPrima) {
		this.abiertoPopupConsumoDeMateriaPrima = abiertoPopupConsumoDeMateriaPrima;
	}

	public List<Cliente> getClientes() {
		return clientes;
	}

	public void setClientes(List<Cliente> clientes) {
		this.clientes = clientes;
	}

	public List<SelectItem> getItemsClientes() {
		return itemsClientes;
	}

	public void setItemsClientes(List<SelectItem> itemsClientes) {
		this.itemsClientes = itemsClientes;
	}

	public List<Pedido> getPedidosPendientes() {
		return pedidosPendientes;
	}

	public void setPedidosPendientes(List<Pedido> pedidosPendientes) {
		this.pedidosPendientes = pedidosPendientes;
	}

	public List<Pedido> getPedidosCancelados() {
		return pedidosCancelados;
	}

	public void setPedidosCancelados(List<Pedido> pedidosCancelados) {
		this.pedidosCancelados = pedidosCancelados;
	}

}
